#创建一个类 class 类名（）
'''
类属性：在类中，类方法外的属性
实例属性：在方法__init__方法中，使用self打点的变量
实例方法：定义在函数中的方法，自带参数self
静态方法：使用修饰符 @staticmethod 的方法
类方法：使用修饰符 @classmethod  的方法 必须要有一个cls得参数
注意：静态方法与类方法中不能调用实例属性和实例方法
'''
class Student():
    school="广州南方" #类属性
    def __init__(self,name,age):#这里name和age是实例属性。只能在这个方法中用
        self.name = name        #在这个方法外就用self.name
        self.age = age

    def show (self):  #这个是实例方法 如果要使用名字与年龄要用self打点
        print(f"我叫{self.name},今年{self.age}")

    @staticmethod
    def peace():
        print("这是一个静态方法")
    @classmethod
    def method (cls):
        print("这是一个类方法")

'''
创建对象
stu=student（”黄思瑜“，18）
'''
stu=Student("黄思瑜",18) #传了两个参数是因为__init__方法中有两个形参
print(stu.name,stu.age)  #这里如果我要输出我创建的这个对象的信息，就要用这个对象名打点调用信息，进行输出
print(stu.school) #关于要输出类属性，类属性是所有对象都相同，所以用类名进行打点调用
stu.show() #对于实例方法我们直接打点调用就会输出这个方法的内容啦
Student.peace() #关于类方法就直接类名进行打点调用
Student.method() #静态方法也是直接打点调用
'''
动态的对特殊需要得对象进行动态绑定属性与方法
'''
#先创建几个对象
stu1=Student("小小",17)
stu2=Student("大大",18)
stu3=Student("左左",17)
stu4=Student("右右",17)
print(stu1.name,stu1.age,stu2.name,stu2.age)
print(stu3.name,stu3.age,stu4.name,stu4.age)
#对stu1进行动态绑定gender这个属性
stu1.gender="男"
print(stu1.name,stu1.age,stu1.gender) #这个gender其他对象是没有的
